home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / WINER.ZIP / MOUSEINT.ASM < prev    next >
Assembly Source File  |  1992-05-13  |  1KB  |  53 lines

  1. ;MOUSEINT.ASM - dedicated mouse interrupt calling routine
  2.  
  3. ;Copyright (c) 1991 Ethan Winer
  4.  
  5.  
  6. .Model Medium, Basic
  7.  
  8. MouseRegs Struc
  9.   RegAX  DW ?
  10.   RegBX  DW ?
  11.   RegCX  DW ?
  12.   RegDX  DW ?
  13.   Segmnt DW ?
  14. MouseRegs Ends
  15.  
  16. .Code
  17.  
  18. MouseInt Proc Uses SI DS ES, MRegs:Word
  19.  
  20.   Mov  SI,MRegs          ;get the address of MouseRegs
  21.   Mov  AX,[SI+RegAX]     ;load each register in turn
  22.   Mov  BX,[SI+RegBX]
  23.   Mov  CX,[SI+RegCX]
  24.   Mov  DX,[SI+RegDX]
  25.  
  26.   Mov  SI,[SI+Segmnt]    ;see what the segment is
  27.   Or   SI,SI             ;is it zero?
  28.   Jz   @F                ;yes, skip ahead and use default
  29.  
  30.   Cmp  SI,-1             ;is it -1?
  31.   Je   @F                ;yes, skip ahead
  32.  
  33.   Mov  DS,SI             ;use the segment specified
  34.  
  35. @@:
  36.   Push DS                ;either way, assign ES=DS
  37.   Pop  ES
  38.   Int  33h               ;call the mouse driver
  39.  
  40.   Push SS                ;regain access to MouseRegs
  41.   Pop  DS
  42.  
  43.   Mov  SI,MRegs          ;access MouseRegs again
  44.   Mov  [SI+RegAX],AX     ;save each register in turn
  45.   Mov  [SI+RegBX],BX
  46.   Mov  [SI+RegCX],CX
  47.   Mov  [SI+RegDX],DX
  48.  
  49.   Ret                    ;return to BASIC
  50.  
  51. MouseInt Endp
  52. End
  53.